在 SPSS 中创建 APA 风格的相关表
作者:Ruben Geert van den Berg,发布于 相关分析 和 SPSS 中的表格
引言与练习数据文件
在 SPSS 中进行相关分析时,我们通常会得到 p 值。但在某些情况下,我们可能不需要 p 值:如果我们的数据代表整个总体,那么 p 值实际上是没有意义的。然而,在 SPSS 的相关分析对话框中,我们无法直接获得不带显著性水平的相关系数。本教程将展示两种方法来实现这个目标。我们将使用 adolescents-clean.sav 数据文件进行演示。
APA 建议的相关表格式
方法一:使用 FACTOR(因子分析)
一个可行的选择是依次点击:A nalyze(分析) D imension Reduction(降维)
F actor(因子分析),如下图所示。
接下来,将 iq
到 wellb
变量移动到变量框中,并按照以下截图中的步骤操作。
点击 P aste(粘贴) 会生成以下 SPSS 语法。它将创建一个不包含显著性水平或样本量的相关矩阵。请注意,FACTOR
默认使用列表删除(listwise deletion)缺失值,但我们可以很容易地将其更改为成对删除(pairwise deletion)。此外,如果我们需要多个相关矩阵,可以大幅缩短语法。
从 FACTOR 语法生成相关矩阵
***Syntax pasted from Analyze - Dimension Reduction - Factor.
**
FACTOR
/VARIABLES iq depr anxi soci wellb
/MISSING pairwise /* WATCH OUT HERE: DEFAULT IS LISTWISE! */
/ANALYSIS iq depr anxi soci wellb
/PRINT CORRELATION EXTRACTION
/CRITERIA MINEIGEN(1) ITERATE(25)
/EXTRACTION PC
/ROTATION NOROTATE
/METHOD=CORRELATION.
***Can be shortened to...
**
factor
/variables iq to wellb
/missing pairwise
/print correlation.
***...or even...
**
factor
/variables iq to wellb
/print correlation.
***but this last version uses listwise deletion of missing values.**
结果
使用成对删除时,我们将不再看到每个相关系数使用的样本量。我们可能不希望在表格中显示这些信息,但也许我们想在表格标题中说明一下。更重要的是,我们无法得知哪些相关系数具有统计显著性,哪些没有。我们的第二种方法可以很好地处理这两个问题。
方法二:调整默认的相关表
创建相关矩阵最快的方法是直接运行 correlations iq to wellb.
。但是,有时我们希望标记出具有统计显著性的相关系数。我们可以通过添加一行代码来实现。
***Create full correlation matrix and flag statistically significant correlations.
**
correlations iq to wellb
/print nosig.
这将生成一个标准的、包含所有样本量和 p 值的相关矩阵。但是,现在我们将使除了实际相关系数之外的所有内容都不可见。
调整透视表结构
首先,右键单击相关表,然后依次点击:Edit C o ntent(编辑内容) In Separate W indow(在单独窗口中),如下图所示。
从 P ivot(透视)菜单中选择 P ivoting Trays(透视托盘)。
将 Statistics (row)(统计量(行))维度拖放到 LAYER(层)区域,然后关闭透视表编辑器。
结果
更快地获得相同的结果?
如果你喜欢最终结果,你可能想知道是否有更快的方法来实现它。是的,有的:下面的 Python 语法可以对输出中的所有透视表进行调整。因此,在运行它之前,请确保输出中只有相关表,否则可能会崩溃。
***Move last row dimension into layer for all tables in output window. This
syntax requires the SPSS Python Essentials.**
begin program.import SpssClient
SpssClient.StartClient()= SpssClient.GetDesignatedOutputDoc()
oDoc = oDoc.GetOutputItems()
oItems for index in range(oItems.Size()):
= oItems.GetItemAt(oItems.Size() - index - 1)
oItem if oItem.GetType() == SpssClient.OutputItemType.PIVOT:
= oItem.GetSpecificType()
pTable = pTable.PivotManager()
pManager = pManager.GetNumRowDimensions()
nRows = pManager.GetRowDimension(0)
rDim 0)
rDim.MoveToLayer(
SpssClient.StopClient() end program.